/*
 * @(#)ScrolledNetworkCanvasDVMRP.java	  06.09.1997  Robert Denda&Didier Gutacker
 *
 */

import java.awt.*;

/** 
 * Die Klasse ScrolledNetworkCanvasDVMRP beinhaltet ein NetworkCanvas und stellt
 * zusaetzlich Scrollbars zur Verfuegung.
 * Sie ist damit eine der graphischen Komponenten des SimulationFrame.
 *
 * @author 	Robert Denda&Didier Gutacker
 * @version     1.1, 20.06.1997
 * @see NetworkCanvasDVMRP
 * @see RollCanvas
 * @see SimFrameDVMRP
 * @see Network
 */

public final class ScrolledNetworkCanvasDVMRP extends RollCanvas {

  NetworkCanvasDVMRP canvas;

  /**
   * Konstruktor
   */

  ScrolledNetworkCanvasDVMRP( Simulation simulation, SimulationFrame frame ) {
    super(simulation,frame);
    canvas = new NetworkCanvasDVMRP( simulation, frame, 750, 350, verticalScroll, horizontalScroll ); 
    add( "Center", canvas );
    add( "South", horizontalScroll );
    add( "East", verticalScroll );
    canvas.setVisible(true);
    repaint();
    setVisible(true);
  } // ScrolledNetworkCanvasDVMRP.ScrolledNetworkCanvasDVMRP

   public boolean handleEvent( Event e ) {
    switch ( e.id ) {
       case Event.SCROLL_LINE_UP:
       case Event.SCROLL_LINE_DOWN:
       case Event.SCROLL_PAGE_UP:
       case Event.SCROLL_PAGE_DOWN:
       case Event.SCROLL_ABSOLUTE: {
	 canvas.repaint();
	 verticalScroll.repaint();
	 horizontalScroll.repaint();
	 return true;
       } // case
    } // switch

    return false;
  } // RollCanvas.handleEvent

  /**
   * Liefert das eigentliche Zeichenbrett
   * @see NetzCanvas
   */

  public final NetworkCanvasDVMRP getCanvas() {
    return canvas;
  } // RollCanvas.getCanvas

  public final void paint( Graphics gc ) {
    super.paint( gc );
    canvas.repaint();
    verticalScroll.paint( gc );
    horizontalScroll.paint( gc );
  } // RollCanvas.paint

  /**
   * Beendet das Zeichenbrett
   * @see NetzCanvas
   */

  public final void finishUp() {
    canvas.finishUp();
  } // RollCanvas.finishUp

  /**
   * Setzt eine neue Animationsgeschwindigkeit fuer das Zeichenbrett
   * @see NetworkCanvasDVMRP#setAnimationSpeed
   */

  public final void setAnimationSpeed( int i ) {
    canvas.setAnimationSpeed( i );
  } // RollCanvas.setAnimationSpeed

  /**
   * Signalisiert dem Zeichenbrett, eine neue Demo zu starten
   * @see NetworkCanvasDVMRP#startDemo
   */

  public final void startDemo() {
    canvas.startDemo();
  } // RollCanvas.startDemo

  /**
   * Signalisiert dem Zeichenbrett, in den Client Modus zu schalten
   * @see NetworkCanvasDVMRP#startRemote
   */

  public final void startRemote() {
    canvas.startRemote();
  } // RollCanvas.startRemote


} // ScrolledNetworkCanvasDVMRP



